perm filename KNOWAX.LSP[F81,JMC]1 blob sn#625825 filedate 1981-11-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	KNOWAX started.
C00008 00003	WISEMEN started.
C00011 ENDMK
C⊗;
KNOWAX started.
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 12. ∀P Q.TRUE1 P AND1 Q≡TRUE1 P∧TRUE1 Q
    ctxt: (3 6 9)   deps: NIL

* 13. ∀P Q.TRUE1 P OR1 Q≡TRUE1 P∨TRUE1 Q
    ctxt: (4 6 9)   deps: NIL

* 14. ∀P Q.TRUE1 P IMPLIES1 Q≡TRUE1 P⊃TRUE1 Q
    ctxt: (2 6 9)   deps: NIL

* 15. ∀P.TRUE1 NOT1 P≡¬TRUE1 P
    ctxt: (5 6 9)   deps: NIL

* 16. ∀P Q.TRUE1 P EQUIV1 Q≡(TRUE1 P≡TRUE1 Q)
    ctxt: (1 6 9)   deps: NIL

* 17. ∀S P.TRUE1 S*P IMPLIES1 P
    ctxt: (2 6 7 9 10)   deps: NIL

* 18. ∀S P.TRUE1 0*(S*P IMPLIES1 P)
    ctxt: (2 6 7 9 10 11)   deps: NIL

* 19. ∀S P.TRUE1 0*(0*P IMPLIES1 0*(S*P))
    ctxt: (2 6 7 9 10 11)   deps: NIL

* 20. ∀S P Q.TRUE1 0*(S*P AND1 S*(P IMPLIES1 Q) IMPLIES1 S*Q)
    ctxt: (2 3 6 7 9 10 11)   deps: NIL

* 21. ∀P Q.TRUE1 0*(P IMPLIES1 (Q IMPLIES1 P))
    ctxt: (2 6 7 9 11)   deps: NIL

* 22. ∀P Q R.TRUE1 0*
                 ((R IMPLIES1 (P IMPLIES1 Q)) AND1 (R IMPLIES1 P) IMPLIES1 
                  (R IMPLIES1 Q))
    ctxt: (2 3 6 7 9 11)   deps: NIL

* 23. ∀P.TRUE1 0*(NOT1 (NOT1 P) IMPLIES1 P)
    ctxt: (2 5 6 7 9 11)   deps: NIL

* 24. ∀S P.TRUE1 0*(S*P IMPLIES1 S*(S*P))
    ctxt: (2 6 7 9 10 11)   deps: NIL

* 25. ∀S P.TRUE1 0*(NOT1 S*P IMPLIES1 S*(NOT1 S*P))
    ctxt: (2 5 6 7 9 10 11)   deps: NIL

* 26. ∀S P.TRUE1 0*(S$P EQUIV1 S*P OR1 S*(NOT1 P))
    ctxt: (1 4 5 6 7 8 9 10 11)   deps: NIL

* 
;;; know.lsp[f81,jmc]	ekl axioms for knowledge

(proof knowax)

(decl (equiv1) |proposition⊗proposition → proposition| constant nil infix 830)

(decl (implies1) |proposition⊗proposition → proposition| constant nil infix 840)

(decl (and1) |proposition⊗proposition* → proposition| functional nil infix 860 both)

(decl (or1) |proposition⊗proposition* → proposition| functional nil infix 850 both)

(decl (not1) |proposition → proposition| constant nil unary 870)

(decl (true1) |proposition → truthval| constant nil unary 820)

(decl (*) |person⊗proposition → proposition| constant nil infix 875)

(decl ($) |person⊗proposition → proposition| constant nil infix 875)

(decl (p p0 p1 p2 q q0 q1 q2 r r0 r1 r2) proposition variable proposition)

(decl (S S0 S1 S2) person variable person)

(decl (0) person constant person)


;;; definitions of imitation propositional operators

(axiom |∀p q.true1(p and1 q) ≡ true1(p) ∧ true1(q)|)

(axiom |∀p q.true1(p or1 q) ≡ true1(p) ∨ true1(q)|)

(axiom |∀p q.true1(p implies1 q) ≡ true1(p) ⊃ true1(q)|)

(axiom |∀p.true1(not1 p) ≡ ¬true1 p|)

(axiom |∀p q.true1(p equiv1 q) ≡ (true1(p) ≡ true1(q))|)


;;; modal knowledge axioms

(axiom |∀S p.true1 S * p implies1 p|)

(axiom |∀S p.true1 0*(S*p implies1 p)|)

(axiom |∀S p.true1 0*(0*p implies1 0*(S*p))|)

(axiom |∀S p q.true1 0*(S*p and1 S*(p implies1 q) implies1 S*q)|)


;;; even fools know tautologies

(axiom |∀p q.true1 0*(p implies1 (q implies1 p))|)

(axiom |∀p q r.true1 0*((r implies1 (p implies1 q)) and1
(r implies1 p) implies1 (r implies1 q))|)

(axiom |∀p.true1 0*(not1 not1 p implies1 p)|)


;;; introspective axioms (not always used)

(axiom |∀S p.true1(0*(S*p implies1 S*(S*p)))|)

(axiom |∀S p.true1(0*(not1 S*p implies1 S*(not1 S*p)))|)

;;; knowing whether

(axiom |∀S p.true1 0*(S$p equiv1 S*p or1 S*(not1 p))|)
WISEMEN started.
* 
* 
* 
* 3. TRUE1 WHITE1 AND1 WHITE2 AND1 WHITE3
   ctxt: (2 KNOWAX#3 KNOWAX#6)   deps: NIL

* 4. TRUE1 0*(WHITE1 OR1 WHITE2 OR1 WHITE3)
   ctxt: (2 KNOWAX#4 KNOWAX#6 KNOWAX#7 KNOWAX#11)   deps: NIL

* 5. TRUE1 0*
         (WISE1$WHITE2 AND1 WISE1$WHITE3 AND1 WISE2$WHITE1 AND1 
          WISE2$WHITE3 AND1 WISE3$WHITE1 AND1 WISE3$WHITE2)
   ctxt: (1 2 KNOWAX#3 KNOWAX#6 KNOWAX#7 KNOWAX#8 KNOWAX#11)   deps: NIL

* 6. TRUE1 WISE3*(WISE2*(NOT1 WISE1*WHITE1))
   ctxt: (1 2 KNOWAX#5 KNOWAX#6 KNOWAX#7)   deps: NIL

* 7. TRUE1 WISE3*(NOT1 WISE2*WHITE2)
   ctxt: (1 2 KNOWAX#5 KNOWAX#6 KNOWAX#7)   deps: NIL

* 
;;; problem of three wise men

(proof wisemen)

(context knowax#1:*)

(decl (wise1 wise2 wise3) person constant person)

(decl (white1 white2 white3) proposition constant proposition)

(axiom |true1(white1 and1 white2 and1 white3)|)

(axiom |true1 0*(white1 or1 white2 or1 white3)|)

(axiom |true1 0*(wise1$white2 and1 wise1$white3 and1 wise2$white1
and1 wise2$white3 and1 wise3$white1 and1 wise3$white2)|)

(axiom |true1 wise3*(wise2*(not1 wise1*white1))|)

(axiom |true1 wise3*(not1 wise2*white2)|)

;;; The goal is now to prove |true1 wise3*white3|

;;; It should be a tautology once the right instantiations of the
;;; axioms have been made.

;;; The modal proof won't necessarily be easy.
;;; The first step may be to show tautology(p) ⊃ 0*p.